defmodule Llm.ChatRequest do
  @moduledoc false

  use Protobuf, protoc_gen_elixir_version: "0.13.0", syntax: :proto3

  field :model, 1, type: :string
  field :messages, 2, repeated: true, type: Llm.ChatMessage
end

defmodule Llm.ChatMessage do
  @moduledoc false

  use Protobuf, protoc_gen_elixir_version: "0.13.0", syntax: :proto3

  field :role, 1, type: :string
  field :content, 2, type: :string
end

defmodule Llm.ChatResponse do
  @moduledoc false

  use Protobuf, protoc_gen_elixir_version: "0.13.0", syntax: :proto3

  field :delta, 1, type: :string
end

defmodule Llm.ChatService.Service do
  @moduledoc false

  use GRPC.Service, name: "llm.ChatService", protoc_gen_elixir_version: "0.13.0"

  rpc :ChatStream, Llm.ChatRequest, stream(Llm.ChatResponse)
end

defmodule Llm.ChatService.Stub do
  @moduledoc false

  use GRPC.Stub, service: Llm.ChatService.Service
end